import { ipcMain } from 'electron';

    const package_info = require('../../package.json')
    // console.log(package_info)
    // console.log(package_info.build.publish[0].url)
    // 引入自动更新模块
    const { autoUpdater } = require('electron-updater');
    // 不支持 ES6 则用如下方式引入
    // const autoUpdater = require("electron-updater").autoUpdater
    
    const feedUrl = package_info.build.publish[0].url+package_info.version; // 更新包位置

export function updater(event) {
    var releaseNode=''
    // 配置安装包远端服务器
    autoUpdater.setFeedURL(feedUrl);

    // 下面是自动更新的整个生命周期所发生的事件
    autoUpdater.on('error', function(message) {
        sendUpdateMessage('error', message);
    });
    autoUpdater.on('checking-for-update', function(message) {
        sendUpdateMessage('checking-for-update', message);
    });
    autoUpdater.on('update-available', function(message) {
        releaseNode = message
        sendUpdateMessage('update-available', message);
    });
    autoUpdater.on('update-not-available', function(message) {
        sendUpdateMessage('update-not-available', message);
    });

    // 更新下载进度事件
    autoUpdater.on('download-progress', function(progressObj) {
        sendUpdateMessage('downloadProgress', progressObj);
    });
    // 更新下载完成事件
    autoUpdater.on('update-downloaded', function(event0, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
        sendUpdateMessage('isUpdateNow');
        event.sender.send('updateFinished',releaseNode)
        ipcMain.once('updateNow',(event)=>{
            autoUpdater.quitAndInstall();
        })
    });

    //执行自动更新检查
    autoUpdater.checkForUpdates();
    
    // 主进程主动发送消息给渲染进程函数
    function sendUpdateMessage(message, data) {
        console.log({ message, data });
        event.sender.send('message', { message, data });
    }
}
    
    